// 函数对象的 length 属性是只读的，用于获取定义函数时指定的形参个数。可以用来检验定义的参数与传入的参数是否相同

// arguments.callee 不能在严格模式下工作
function check(args) {
    var actual = args.length;
    var expected = args.callee.length;

    if (expected !== actual) {
        throw Error('Expected: ' + expected + 'args; got ' + actual + 'args;')
    }
}
function f(x, y, z) {
    check(arguments);
    return x + y + z;
}

f(1,2)